//package br.edu.ufcg.dsc.adsd.lotv;
//
//import java.io.BufferedReader;
//import java.io.FileReader;
//import java.util.HashMap;
//import java.util.StringTokenizer;
//import java.util.Vector;
//
//import eduni.simjava.Sim_system;
//import br.edu.ufcg.dsc.adsd.lotv.core.Connectable;
//import br.edu.ufcg.dsc.adsd.lotv.core.Spool;
//import br.edu.ufcg.dsc.adsd.lotv.core.entites.LAN;
//import br.edu.ufcg.dsc.adsd.lotv.core.entites.Printer;
//import br.edu.ufcg.dsc.adsd.lotv.core.entites.Server;
//import br.edu.ufcg.dsc.adsd.lotv.core.entites.Source;
//
//public class Main2 {
//	
//	//TODO: Retirar o que é aproveitável daqui e isolar no objeto SimulationConfiger
//	
//	private static final String ENTITY_FILE = "entidades";
//	private static final String CONNECTION_FILE = "conexoes";
//
//	/**
//	 * Carrega todas as entidades.
//	 * 
//	 * OBS: Na leitura dos campos, os que começarem com '#' são considerados
//	 * comentários e linhas em branco são desconsideradas.
//	 */
//	private static HashMap<String, Connectable> load_entities() {
//		try {
//			HashMap<String,Connectable> entities = new HashMap<String, Connectable>();
//			
//			// Leitor do arquivo
//			FileReader reader = new FileReader(ENTITY_FILE);
//			BufferedReader buffer = new BufferedReader(reader);
//
//			// Linhas do arquivo
//			String linha = null;
//			
//			while ((linha = buffer.readLine()) != null) {
//				// Pega as SubStrings separadas por ' ' da String linha
//				StringTokenizer tokenizer = new StringTokenizer(linha);
//
//				Vector<String> parametros = new Vector<String>();
//				while (tokenizer.hasMoreTokens()) {
//					String token = tokenizer.nextToken();
//					parametros.add(token);
//				}
//				
//				if (!parametros.firstElement().startsWith("#")) {
//					String type = parametros.remove(0);
//					String name = parametros.remove(1);
//					entities.put(name, load_entity(type, name, parametros));
//				}
//			}
//			
//			return entities;
//			
//		} catch (Exception ex) {
//			ex.printStackTrace();
//			System.exit(1);
//			return null;
//		}
//	}
//
//	private static Connectable load_entity(String type, String name, Vector<String> parametros) throws Exception {
//		if (type.toLowerCase().equals("lan")) {
//			return new LAN(name);
//		}
//		if (type.toLowerCase().equals("printer")) {
//			return new Printer(name);
//		}
//		if (type.toLowerCase().equals("server")) {
//			return new Server(name);
//		}
//		if (type.toLowerCase().equals("source")) {
//			return new Source(name);
//		}
//		if (type.toLowerCase().equals("spool")) {
//			return new Spool(name);
//		}
//		throw new Exception("Entidade não existe!");
//	}
//
//	private static HashMap<String, String> load_connections() {
//		try {
//			HashMap<String,String> connections = new HashMap<String, String>();
//			
//			// Leitor do arquivo
//			FileReader reader = new FileReader(CONNECTION_FILE);
//			BufferedReader buffer = new BufferedReader(reader);
//
//			// Linhas do arquivo
//			String linha = null;
//			
//			while ((linha = buffer.readLine()) != null) {
//				// Pega as SubStrings separadas por ' ' da String linha
//				StringTokenizer tokenizer = new StringTokenizer(linha);
//
//				Vector<String> parametros = new Vector<String>();
//				while (tokenizer.hasMoreTokens()) {
//					String token = tokenizer.nextToken();
//					parametros.add(token);
//				}
//				
//				if (!parametros.firstElement().startsWith("#")) {
//					connections.put(parametros.get(0), parametros.get(1));
//				}
//			}
//			
//			return connections;
//			
//		} catch (Exception ex) {
//			ex.printStackTrace();
//			System.exit(1);
//			return null;
//		}
//	}
//	
//	
//	public static void main(String[] args) {
//		Sim_system.initialise();
//
////		// Toda essa configuração é executada a partir do objeto que configura
////		// a simulação a partir do arquivo de config
////		Source src = new Source("src");
////		Server srv = new Server("srv");
////		LAN lan = new LAN("lan");
////		Spool spl = new Spool("spl");
////		Printer prn1 = new Printer("prn1");
////		// conectar src com srv, srv com lan, lan com prn1, prn1 com lan, lan
////		// com srv,
////		src.target(src.connect(srv));
////		srv.setLan(srv.connect(lan));
////		lan.setServer(lan.connect(srv));
////		lan.setSpool(lan.connect(spl));
////		spl.connect(prn1);
////		prn1.setLan(prn1.connect(lan));
//
//		HashMap<String, Connectable> entities = load_entities();
//		HashMap<String, String> connections = load_connections();
//		
//		for (String name : entities.keySet()) {
//			for (String con : connections.keySet()) {
//				if (con.equals(name)) {
//					// Vai ser um ninho da porra fazer esse bloco ai de cima aqui dentro.
//					entities.get(con).connect(entities.get(connections.get(con)));
//				}
//			}
//		}
//		
//		Sim_system.run();
//	}
//
//}
